TD - Programmation Python

Exercice 1 Dans la fenêtre principale (la console), exécutez les instructions suivantes. Sur votre copie, expliquez les résulats en une phrase. Lorsque la console génère une erreur, essayez de comprendre le message d'erreur.
1
>>>2 + 1 >>>2.1 >>>2,1 >>>2.0 + 1
>>>int (3.14) >>>float (3) >>>str (21) >>>12 < 13
2
>>>"toto" + "tata" >>>"toto" + 10 >>>"toto" + str (10) >>>"albert" > "barry"
>>>false >>>False >>>False and True >>> 2<3 and False
Exercice 2
1 Commentez simplement sur votre copie les suites d'instructions suivantes :
>>>x=3
>>>x=2
>>>print(x)
>>>x=2;y=3
>>>print(x*y)
>>>print(x**y)
>>>5/2
>>>5//2
>>>5%2
>>>x=2
>>>print("resultat=x")
>>>print("resultat=%d" %x)
>>>print("resultat=%f" %x)
2 Commencez par taper la commande ">>>import math" pour utiliser les fonctions mathématiques, et expliquer ce que font les fonctions utilisées :
>>>x=-6.7
>>>abs(x)
>>>int(x)
>>>round(x)
>>>x=1.2
>>>math.trunc(x)
>>>math.ceil(x)
>>>math.floor(x)
>>>print('oiseau')
>>>print('L'oiseau')
>>>print("L'oiseau")
>>>print('L\'oiseau')
>>>L=[11,'b', 1.2]; c='hello'
>>>L[2]
>>>c[0]
>>>c[len(c)-1]
Exercice 3

Un polynôme du second degré est de la forme \(a x^2 + b x + c\) où \(a\), \(b\) et \(c\) sont des réels.

Télécharger le fichier discriminant.py qui contient une fonction qui calcule le discriminant, et éditez le.

1 Modifiez le programme pour qu'il demande à l'utilisateur d'entrer au clavier les trois valeurs \(a\), \(b\) et \(c\) et qu'il donne la réponse avec une phrase comme "Le discriminant vaut ...".
2 Modifiez encore le programme pour qu'il calcule les racines. Pour cela, il faudra utiliser if, elif et else, pour tester si le discriminant est positif, négatif ou nul.
Exercice 4 On souhaite tester si un triangle est rectangle à partir des longueurs de ses trois côtés. On rappelle qu'un triangle est rectangle si les trois longueurs vérifient l'identité de pythagore.
1 Créer une fonction est_rectangle0() qui prend trois nombres \(x, y\) et \(z\) en argument où \(z\) est le plus grand des trois et qui renvoie True si le triangle est rectangle, et False sinon.
2 Créer une fonction est_rectangle() qui prend trois nombres \(x, y\) et \(z\)en argument, dans n'importe quel ordre, et qui renvoie True si le triangle est rectangle, et False sinon (utiliser la fonction précédente).
3 Tester avec le fameux triplet pythagoricien \((3, 4, 5)\).
Exercice 5
1 Ecrire une fonction somme_inv_carres() qui prend un entier \(n\) en argument, et calcule la somme : $$ 1 + \frac{1}{2^2} + \frac{1}{3^2} + ... + \frac{1}{n^2} $$
On rappelle que \(x^y\), s'écrit x**y en python.
2 Appliquer cette fonction pour \(n=10000\), et comparer le résultat avec \(\frac{\pi^2}{6}\).
La constante \(\pi\) est utilisable à partir de la librairie math. On importe la librairie à l'aide de la commande "import math", puis il suffit de taper "math.pi" pour la constante \(\pi\).
Exercice 6
1 Télécharger le fichier python suivant pal.py . Il contient une fonction nettoyer(). Appliquer la fonction nettoyer à une chaîne de caractère contenant des accents et de la ponctuation.
2 Ecrire une fonction appelée renverse() qui prend en argument une chaîne de caractères et qui retourne la chaîne de caractère renversée. Par exemple, renverse('hello'), renverra 'olleh'. Il sera possible de s'inspirer de l'exercice 7 du TD d'algorithmique.
3 En utilisant les deux fonctions précédentes, faire une fonction palindrome () qui renvoie True si la chaîne est un palindrome, et False sinon. Essayer avec l'exemple célèbre :
Tu l'as trop écrasé César ce port salut
4 Question difficile
La fonction nettoyer() utilise une librairie et des fonctionnalités complexes. Programmer une fonction nettoyer2() qui fasse la même chose et n'utilise que des boucles, des tests, et des fonctions simples.
  • "str.replace('a', 'A')" remplacera tous les caractères 'a' par 'A' dans la chaîne de caractères str
  • Il est possible de tester si le caractère 'a' est dans une chaîne stravec la syntaxe "if 'a' in str: ..."
  • Il est possible de tester si un élément est dans une liste de la même manière.
Exercice 7 Pour les questions suivantes, utiliser le cours d'algorithmique.
1 Ecrire une fonction tri_selection() qui prend en argument une liste, et renvoie la liste triée selon le tri par sélection.
2 Ecrire une fonction tri_selection() qui prend en argument une liste, et renvoie la liste triée selon le tri à bulle. Vérifier sur une liste de votre choix que les deux fonctions réalisent la même tâche.
3 Il existe une librairie "time" en python qui permet de chronométrer vos programmes en prenant le temps de l'horloge deux fois, et en prenant la différence :
import time
tic = time.clock()
#attendre un peu
toc = time.clock()
temps = toc - tic
Comparer la vitesse d'exécution de vos deux fonctions sur les listes suivantes
  • [12,9,23,1,23,-2,0,67,5,34,-12,-999, 19, 3, 34, 5, 67]
  • list(range(0,10000))
  • list(range(10000,1,-1))
  • list(range(100000,1,-1))
4 Python possède déjà une fonction de tri list.sort(), qui modifie la liste donnée.
Par exemple, si on a une liste L valant [3,2,1], en tapant l'instruction, list.sort(L), la liste L est modifiée et vaut désormais [1,2,3]
En utilisant le chronomètre de python, comparez les vitesses d'exécution de vos fonctions avec celle de la fonction list.sort() sur les exemples précédents.